package com.goodcol.plugin.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.intellij.psi.PsiClass;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * 从Java实体类生成时，构造的TableInfo对象
 *
 * @author 单红宇
 * @date 2024/2/1 10:23
 */
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class ClassTableInfo extends TableInfo {

    /**
     * 原始对象（从实体生成）
     * Note: 实际类型是com.intellij.psi.PsiClass，为了避免velocity反射出现ClassNotFound，写为Object类型
     */
    @JsonIgnore
    private PsiClass obj;

    @Override
    public String getTableName() {
        if (obj == null) {
            return "";
        }
        // 这里需要补充解析实体类上有无 @Entity @Table 这类注解，并从中解析读取tableName，如果都没有注解，默认使用类名
        return obj.getName();
    }

    @Override
    public PsiClass getObj() {
        return this.obj;
    }

}
